/*
 * 根据配置文件生成action类
 *
 * VERSION  DATE        BY              REASON
 * -------- ----------- --------------- ------------------------------------------
 * 1.00     2014.07.24  wuxiaogang      程序・发布
 * -------- ----------- --------------- ------------------------------------------
 * Copyright 2014 easycode System. - All Rights Reserved.
 *
 */
package cn.com.softvan.easycode.utils;

import java.io.File;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import cn.com.softvan.common.StrUtils;
import cn.com.softvan.common.Validator;
import cn.com.softvan.easycode.bean.ColumsBean;
import cn.com.softvan.easycode.bean.ConfigBean;
import cn.com.softvan.easycode.bean.TableBean;
/**
 * 根据配置文件生成action类
 * @author wuxiaogang 
 *
 */
public class ActionUtils {
	/**
	 * 生成
	 * @param config
	 * @param struts_sb
	 * @return
	 */
	public static StringBuffer toFile(ConfigBean config,StringBuffer authSql){
		StringBuffer csb=new StringBuffer("");
		try {
			if(null==config){
				return csb;
			}
			//TODO 获取表列表
			List<TableBean> tables=config.getTables();
			if(null==tables){
				return csb;
			}
			for(TableBean table:tables){
				try {
					//action类名
					String className="";
					//service类名
					String serviceName="";
					//bean类名
					String beanName="";
					//auth类名简写
					String authName="";
					//是否生成action 0否 1是
					String isAction=config.getIsAction();
					if(Validator.notEmpty(table.getIsAction())){
						isAction=table.getIsAction();
					}
					String xmlExtends=config.getSpringActionXmlExtends();
					if(Validator.notEmpty(table.getSpringActionXmlExtends())){
						xmlExtends=table.getSpringActionXmlExtends();
					}
					if("0".equals(isAction)){
						continue;
					}
					//存放内容
					StringBuffer sb=new StringBuffer("");
					//TODO ---1-----版本注释 --2---依赖包引入---类功能注释----
					sb.append(HeaderUtils.getHeader(config, "ACTION类", table,7));
					//TODO ---3----创建类
					sb.append("\n");
					sb.append("public class ");
					if(Validator.isEmpty(table.getClassName())){
						className=StrUtils.toUpperCase(StrUtils.getRidprefixTableName(config.getRidprefixlen(),table.getTableName()),"_")+"Action";
						serviceName=StrUtils.toUpperCase(StrUtils.getRidprefixTableName(config.getRidprefixlen(),table.getTableName()),"_")+"Manager";
						beanName=StrUtils.toUpperCase(StrUtils.getRidprefixTableName(config.getRidprefixlen(),table.getTableName()),"_")+"Bean";
					}else{
						className=table.getClassName()+"Action";
						serviceName=table.getClassName()+"Manager";
						beanName=table.getClassName()+"Bean";
					}
					if(Validator.notEmpty(table.getActionName())){
						className=table.getActionName();
					}
					if(Validator.notEmpty(table.getServiceName())){
						serviceName=table.getServiceName();
					}
					authName=StrUtils.toLowerCase(className.replace("Action", ""));
					sb.append(className);
					//TODO 逻辑删除字段存在标记
					String del_flag=null;
					
					//TODO 获取表字段列表
					List<ColumsBean> columsBeans=table.getColums();
					if(columsBeans==null){
						columsBeans=new ArrayList<ColumsBean>();
					}
					//--主键字段列表--
					List<ColumsBean> pkColumsBeans=new ArrayList<ColumsBean>();
					//-----1-字段列表------
					for(int i=0;i<columsBeans.size();i++){
						ColumsBean colums=columsBeans.get(i);

						if(Validator.notEmpty(config.getDelColumns()) && config.getDelColumns().equals(StrUtils.toLowerCase((colums.getColumsKey())))){
							del_flag="存在";
						}
						//是否主键
						if("PRI".equals(StrUtils.toUpperCase(colums.getColumsKey()))){
							pkColumsBeans.add(colums);
						}
					}
					
					//-//TODO--3.1--继承----3.2--接口实现----
					sb.append(HeaderUtils.setExtendsAndimplements(config, table, 7));
					
					//--
					sb.append("{\n");
					//--序列号--
					sb.append("\n\tprivate static final long serialVersionUID = -"+HeaderUtils.getbigInt()+"L;");
					//--日志记录--
					sb.append("\n\tprivate static final transient Logger log = Logger.getLogger("+className+".class);");
					//--
					sb.append("\n\t/**BEAN类  "+table.getTableNote()+"*/");
					sb.append("\n\tprivate "+beanName+" bean;");
					sb.append("\n\t/**BEAN类  "+table.getTableNote()+" 集合*/");
					sb.append("\n\tprivate List<"+beanName+"> beans;");
					sb.append("\n\t/**"+table.getTableNote()+" 业务处理*/");
					sb.append("\n\tprivate I"+serviceName+" "+StrUtils.toLowerCaseFirstOne(serviceName)+";");
					//TODO -----------------begin---------------------------------------------
					
					sb.append("\n\t/**");
					sb.append("\n\t * <p> 初始化处理。 </p>");
					sb.append("\n\t * <ol>");
					sb.append("\n\t * [功能概要] ");
					sb.append("\n\t * <div>初始化处理。</div>");
					sb.append("\n\t * </ol>");
					sb.append("\n\t * @return 转发字符串");
					sb.append("\n\t */");
					sb.append("\n\t@RequiresPermissions(\""+authName+":init\")");
					addAuthSql(authSql,authName,table.getTableNote(),authName+":init","");
					sb.append("\n\tpublic String init() {");
					sb.append("\n\t\tlog.info(\""+className+" init.........\");");
//					sb.append("\n\t\tint offset = 0;");
//					sb.append("\n\t\t// 分页偏移量");
//					sb.append("\n\t\tif (!Validator.isNullEmpty(request.getParameter(\"offset\"))");
//					sb.append("\n\t\t\t&& Validator.isNum(request.getParameter(\"offset\"))) {");
//					sb.append("\n\t\t\t\toffset = Integer.parseInt(request.getParameter(\"offset\"));");
//					sb.append("\n\t\t}");
//					sb.append("\n\t\tPageInfo page = new PageInfo(); ");
//					sb.append("\n\t\t//当前页");
//					sb.append("\n\t\tpage.setCurrOffset(offset);");
//					sb.append("\n\t\t//每页显示条数");
//					sb.append("\n\t\tpage.setPageRowCount(CommonConstant.PAGEROW_DEFAULT_COUNT);");
//					sb.append("\n\t\t"+beanName+" bean1 = new "+beanName+"();");
//					sb.append("\n\t\tbean1.setPageInfo(page);");
//					sb.append("\n\t\t//列表");
//					sb.append("\n\t\tList<"+beanName+"> beans="+StrUtils.toLowerCaseFirstOne(serviceName)+".findDataIsPage(bean1);");
//					sb.append("\n\t\trequest.setAttribute(\"beans\",beans);");
//					sb.append("\n\t\trequest.setAttribute(CommonConstant.PAGEROW_OBJECT_KEY,page);");
					sb.append("\n\t\treturn \"init\";");
					sb.append("\n\t}");
					
					sb.append("\n\t/**");
					sb.append("\n\t * <p> 信息列表 (未删除)。 </p>");
					sb.append("\n\t * <ol>");
					sb.append("\n\t * [功能概要] ");
					sb.append("\n\t * <div>信息列表。</div>");
					sb.append("\n\t * </ol>");
					sb.append("\n\t * @return 转发字符串");
					sb.append("\n\t */");
					sb.append("\n\t@RequiresPermissions(\""+authName+":init\")");
					sb.append("\n\tpublic String infoList() {");
					sb.append("\n\t\tlog.info(\""+className+" infoList.........\");");
					sb.append("\n\t\tif(bean==null){");
					sb.append("\n\t\t\tbean = new "+beanName+"();");
					sb.append("\n\t\t}");
					sb.append("\n\t\tPageInfo page = new PageInfo(); ");
					sb.append("\n\t\t//分页偏移量");
					sb.append("\n\t\tpage.setCurrOffset(bean.getOffset());");
					sb.append("\n\t\t//每页显示条数");
					sb.append("\n\t\tpage.setPageRowCount(CommonConstant.PAGEROW_DEFAULT_COUNT);");
					sb.append("\n\t\tbean.setPageInfo(page);");
					sb.append("\n\t\t//信息列表");
					sb.append("\n\t\tbeans="+StrUtils.toLowerCaseFirstOne(serviceName)+".findDataIsPage(bean);");
					sb.append("\n\t\t//分页对象-JSP标签使用-");
					sb.append("\n\t\trequest.setAttribute(CommonConstant.PAGEROW_OBJECT_KEY,page);");
					sb.append("\n\t\treturn \"infoList\";");
					sb.append("\n\t}");
					
					
					sb.append("\n\t/**");
					sb.append("\n\t * <p> 编辑。</p>");
					sb.append("\n\t * <ol>");
					sb.append("\n\t * [功能概要] ");
					sb.append("\n\t * <div>编辑。</div>");
					sb.append("\n\t * </ol>");
					sb.append("\n\t * @return 转发字符串");
					sb.append("\n\t */");
					sb.append("\n\t@RequiresPermissions(\""+authName+":edit\")");
					addAuthSql(authSql, authName+":add",table.getTableNote()+"_新增", authName+":add",authName);
					addAuthSql(authSql, authName+":edit",table.getTableNote()+"_编辑", authName+":edit",authName);
					sb.append("\n\tpublic String edit() {");
					sb.append("\n\t\tlog.info(\""+className+" edit.........\");");
					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
						for(ColumsBean columsBean:pkColumsBeans){
							sb.append("\n\t\tString "+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"=request.getParameter(\""+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"\");");
						}
					}else{
						sb.append("\n\t\tString id=request.getParameter(\"id\");");
					}
					//满足编辑后回到当前页
					sb.append("\n\t\tint offset = 0;");
					sb.append("\n\t\tif(bean!=null){");
					sb.append("\n\t\t\toffset=bean.getOffset();");
					sb.append("\n\t\t}");

					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
						sb.append("\n\t\tif(");
						int i=0;
						for(ColumsBean columsBean:pkColumsBeans){
							sb.append("Validator.notEmpty("+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+")");
							if(i<pkColumsBeans.size()-1){
								sb.append(" && ");
							}
							i++;
						}
						sb.append("){");
					}else{
						sb.append("\n\t\tif(Validator.notEmpty(id)){");
					}
					sb.append("\n\t\t\t"+beanName+" bean1=new "+beanName+"();");
					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
						for(ColumsBean columsBean:pkColumsBeans){
							sb.append("\n\t\t\tbean1.set"+StrUtils.toUpperCaseFirstOne(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"("+HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName())+");//"+columsBean.getColumsNote()+"");
						}
					}else{
						sb.append("\n\t\t\tbean1.setId(id);");
					}
					sb.append("\n\t\t\tbean="+StrUtils.toLowerCaseFirstOne(serviceName)+".findDataById(bean1);");
					sb.append("\n\t\t}");
					sb.append("\n\t\tif(bean==null){");
					sb.append("\n\t\t\tbean=new "+beanName+"();");
					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
						for(ColumsBean columsBean:pkColumsBeans){
							sb.append("\n\t\t\tbean.set"+StrUtils.toUpperCaseFirstOne(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"(IdUtils.createUUID(32));//"+columsBean.getColumsNote()+"");
						}
					}else{
						sb.append("\n\t\t\tbean.setId(IdUtils.createUUID(32));");
					}
					
					sb.append("\n\t\t}");
					sb.append("\n\t\tbean.setOffset(offset);");
					sb.append("\n\t\treturn \"edit\";");
					sb.append("\n\t}");

					sb.append("\n\t/**");
					sb.append("\n\t * <p> 删除。 </p>");
					sb.append("\n\t * <ol>");
					sb.append("\n\t * [功能概要] ");
					sb.append("\n\t * <div>逻辑删除。</div>");
					sb.append("\n\t * </ol>");
					sb.append("\n\t * @return 转发字符串");
					sb.append("\n\t */");
					sb.append("\n\t@RequiresPermissions(\""+authName+":del\")");
					addAuthSql(authSql, authName+":del",table.getTableNote()+"_逻辑删除", authName+":del",authName);
					sb.append("\n\tpublic String del() {");
					sb.append("\n\t\tlog.info(\""+className+" del.........\");");
					
					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
						for(ColumsBean columsBean:pkColumsBeans){
							sb.append("\n\t\tString "+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"=request.getParameter(\""+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"\");");
						}
					}else{
						sb.append("\n\t\tString id=request.getParameter(\"id\");");
					}
					sb.append("\n\t\t"+beanName+" bean1=new "+beanName+"();");
					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
						for(ColumsBean columsBean:pkColumsBeans){
							sb.append("\n\t\tbean1.set"+StrUtils.toUpperCaseFirstOne(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"("+HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName())+");//"+columsBean.getColumsNote()+"");
						}
					}else{
						sb.append("\n\t\t\tbean1.setId(id);");
					}
					sb.append("\n\t\tString msg=\"1\";");
					sb.append("\n\t\ttry {");
					sb.append("\n\t\t\tmsg="+StrUtils.toLowerCaseFirstOne(serviceName)+".deleteDataById(bean1);");
					sb.append("\n\t\t} catch (Exception e) {");
					sb.append("\n\t\t\tmsg=e.getMessage();");
					sb.append("\n\t\t}");
					sb.append("\n\t\trequest.setAttribute(\"msg\",msg);");
					sb.append("\n\t\t");
					sb.append("\n\t\treturn SUCCESS;");
					sb.append("\n\t}");
					
					
					sb.append("\n\t/**");
					sb.append("\n\t * <p> 信息保存 </p>");
					sb.append("\n\t * <ol>");
					sb.append("\n\t * [功能概要] ");
					sb.append("\n\t * <div>新增。</div>");
					sb.append("\n\t * <div>修改。</div>");
					sb.append("\n\t * </ol>");
					sb.append("\n\t * @return 转发字符串");
					sb.append("\n\t */");
					sb.append("\n\t@RequiresPermissions(value={\""+authName+":add\",\""+authName+":edit\"},logical=Logical.OR)");
					sb.append("\n\tpublic String save() {");
					sb.append("\n\t\tlog.info(\""+className+" save.........\");");
					sb.append("\n\t\tif(bean!=null){");
					sb.append("\n\t\t\tString msg=\"1\";");
					sb.append("\n\t\t\ttry {");
					sb.append("\n\t\t\t//TODO--请加入验证字段--");
					sb.append("\n\t\t\t\tif(Validator.isEmpty(\"需要验证的字段\")){");
					sb.append("\n\t\t\t\t\tmsg=\"保存失败!信息为空!\";");
					sb.append("\n\t\t\t\t}else{");
					sb.append("\n\t\t\t\t\tOrgUserBean user = (OrgUserBean) request.getSession().getAttribute(CommonConstant.SESSION_KEY_USER);");
					sb.append("\n\t\t\t\t\tif(user!=null){");
					sb.append("\n\t\t\t\t\t\tbean.setCreateIp(getIpAddr());");
					sb.append("\n\t\t\t\t\t\tbean.setCreateId(user.getId());");
					sb.append("\n\t\t\t\t\t\tbean.setUpdateIp(getIpAddr());");
					sb.append("\n\t\t\t\t\t\tbean.setUpdateId(user.getId());");
					sb.append("\n\t\t\t\t\t}");
					sb.append("\n\t\t\t\t\tmsg="+StrUtils.toLowerCaseFirstOne(serviceName)+".saveOrUpdateData(bean);");
					sb.append("\n\t\t\t\t}");
					sb.append("\n\t\t\t} catch (Exception e) {");
					sb.append("\n\t\t\t\tmsg=e.getMessage();");
					sb.append("\n\t\t\t}");
					sb.append("\n\t\t\trequest.setAttribute(\"msg\",msg);");
					sb.append("\n\t\t}else{");
					sb.append("\n\t\t\trequest.setAttribute(\"msg\", \"信息保存失败!\");");
					sb.append("\n\t\t}");
					sb.append("\n\t\treturn SUCCESS;");
					sb.append("\n\t}");
					
//					sb.append("\n\t/**");
//					sb.append("\n\t * <p> 删除。 </p>");
//					sb.append("\n\t * <ol>");
//					sb.append("\n\t * [功能概要] ");
//					sb.append("\n\t * <div>物理删除。</div>");
//					sb.append("\n\t * </ol>");
//					sb.append("\n\t * @return 转发字符串");
//					sb.append("\n\t */");
//					sb.append("\n\t@RequiresPermissions(\""+authName+":delph\")");
//					addAuthSql(authSql, authName+":delph",authName+":delph",table.getTableNote()+"_物理删除",authName);
//					
//					sb.append("\n\tpublic String delph() {");
//					sb.append("\n\t\tlog.info(\""+className+" del ph.........\");");
//					
//					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
//						for(ColumsBean columsBean:pkColumsBeans){
//							sb.append("\n\t\tString "+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"=request.getParameter(\""+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"\");");
//						}
//					}else{
//						sb.append("\n\t\tString id=request.getParameter(\"id\");");
//					}
//					sb.append("\n\t\t"+beanName+" bean1=new "+beanName+"();");
//					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
//						for(ColumsBean columsBean:pkColumsBeans){
//							sb.append("\n\t\tbean1.set"+StrUtils.toUpperCaseFirstOne(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"("+HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName())+");//"+columsBean.getColumsNote()+"");
//						}
//					}else{
//						sb.append("\n\t\t\tbean1.setId(id);");
//					}
//					sb.append("\n\t\tString msg=\"1\";");
//					sb.append("\n\t\ttry {");
//					sb.append("\n\t\t\tmsg="+StrUtils.toLowerCaseFirstOne(serviceName)+".deleteData(bean1);");
//					sb.append("\n\t\t} catch (Exception e) {");
//					sb.append("\n\t\t\tmsg=e.getMessage();");
//					sb.append("\n\t\t}");
//					sb.append("\n\t\trequest.setAttribute(\"msg\",msg);");
//					sb.append("\n\t\t");
//					sb.append("\n\t\treturn SUCCESS;");
//					sb.append("\n\t}");
//
//					
//					sb.append("\n\t/**");
//					sb.append("\n\t * <p> 预览。</p>");
//					sb.append("\n\t * <ol>");
//					sb.append("\n\t * [功能概要] ");
//					sb.append("\n\t * <div>预览。</div>");
//					sb.append("\n\t * </ol>");
//					sb.append("\n\t * @return 转发字符串");
//					sb.append("\n\t */");
//					sb.append("\n\t@RequiresPermissions(\""+authName+":view\")");
//					addAuthSql(authSql, authName+":view",authName+":view",table.getTableNote()+"_详情",authName);
//					sb.append("\n\tpublic String view() {");
//					sb.append("\n\t\tlog.info(\""+className+" view.........\");");
//					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
//						for(ColumsBean columsBean:pkColumsBeans){
//							sb.append("\n\t\tString "+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"=request.getParameter(\""+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"\");");
//						}
//					}else{
//						sb.append("\n\t\tString id=request.getParameter(\"id\");");
//					}
//					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
//						sb.append("\n\t\tif(");
//						int i=0;
//						for(ColumsBean columsBean:pkColumsBeans){
//							sb.append("Validator.notEmpty("+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+")");
//							if(i<pkColumsBeans.size()-1){
//								sb.append(" && ");
//							}
//							i++;
//						}
//						sb.append("){");
//					}else{
//						sb.append("\n\t\tif(Validator.notEmpty(id)){");
//					}
//					sb.append("\n\t\t\t"+beanName+" bean1=new "+beanName+"();");
//					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
//						for(ColumsBean columsBean:pkColumsBeans){
//							sb.append("\n\t\t\tbean1.set"+StrUtils.toUpperCaseFirstOne(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"("+HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName())+");//"+columsBean.getColumsNote()+"");
//						}
//					}else{
//						sb.append("\n\t\t\tbean1.setId(id);");
//					}
//					sb.append("\n\t\t\tbean="+StrUtils.toLowerCaseFirstOne(serviceName)+".findDataById(bean1);");
//					sb.append("\n\t\t}");
//					sb.append("\n\t\treturn \"view\";");
//					sb.append("\n\t}");
//
//					sb.append("\n\t/**");
//					sb.append("\n\t * <p> 回收站。</p>");
//					sb.append("\n\t * <ol>");
//					sb.append("\n\t * [功能概要] ");
//					sb.append("\n\t * <div>回收站。</div>");
//					sb.append("\n\t * </ol>");
//					sb.append("\n\t * @return 转发字符串");
//					sb.append("\n\t */");
//					sb.append("\n\t@RequiresPermissions(\""+authName+":recycle\")");
//					addAuthSql(authSql, authName+":recycle",authName+":recycle",table.getTableNote()+"_回收站",authName);
//					sb.append("\n\tpublic String recycle() {");
//					sb.append("\n\t\tlog.info(\""+className+" recycle.........\");");
//					sb.append("\n\t\tint offset = 0;");
//					sb.append("\n\t\t// 分页偏移量");
//					sb.append("\n\t\tif (!Validator.isNullEmpty(request.getParameter(\"offset\"))");
//					sb.append("\n\t\t\t\t&& Validator.isNum(request.getParameter(\"offset\"))) {");
//					sb.append("\n\t\t\toffset = Integer.parseInt(request.getParameter(\"offset\"));");
//					sb.append("\n\t\t}");
//					sb.append("\n\t\tPageInfo page = new PageInfo(); ");
//					sb.append("\n\t\t//当前页");
//					sb.append("\n\t\tpage.setCurrOffset(offset);");
//					sb.append("\n\t\t//每页显示条数");
//					sb.append("\n\t\tpage.setPageRowCount(15);");
//					sb.append("\n\t\t"+beanName+" bean1 = new "+beanName+"();");
//					sb.append("\n\t\tbean1.setPageInfo(page);");
//					sb.append("\n\t\t//已删除");
//					//逻辑删除标记 字段
//					if(del_flag!=null){
//						sb.append("\n\t\tbean1.set"+StrUtils.toUpperCaseFirstOne(HeaderUtils.getStr(config.getIsformat(),config.getDelColumns()))+"(\"1\");");
//					}else{
//						sb.append("\n\t\t//TODO 未找到逻辑删除标记 字段");
//					}
//					sb.append("\n\t\t//列表");
//					sb.append("\n\t\tList<"+beanName+"> beans="+StrUtils.toLowerCaseFirstOne(serviceName)+".findDataIsPage(bean1);");
//					sb.append("\n\t\trequest.setAttribute(\"beans\",beans);");
//					sb.append("\n\t\trequest.setAttribute(CommonConstant.PAGEROW_OBJECT_KEY,page);");
//					sb.append("\n\t\treturn \"recycle\";");
//					sb.append("\n\t}");
//
//					sb.append("\n\t/**");
//					sb.append("\n\t * <p> 恢复。</p>");
//					sb.append("\n\t * <ol>[功能概要] ");
//					sb.append("\n\t * <div>恢复逻辑删除的数据。</div>");
//					sb.append("\n\t * </ol>");
//					sb.append("\n\t * @return 转发字符串");
//					sb.append("\n\t */");
//					sb.append("\n\t@RequiresPermissions(\""+authName+":recovery\")");
//					addAuthSql(authSql, authName+":recovery",authName+":recovery",table.getTableNote()+"_删除恢复",authName);
//					sb.append("\n\tpublic String recovery() {");
//					sb.append("\n\t\tlog.info(\""+className+" recovery.........\");");
//					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
//						for(ColumsBean columsBean:pkColumsBeans){
//							sb.append("\n\t\tString "+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"=request.getParameter(\""+(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"\");");
//						}
//					}else{
//						sb.append("\n\t\tString id=request.getParameter(\"id\");");
//					}
//					sb.append("\n\t\t//========创建bena对象=============");
//					sb.append("\n\t\t"+beanName+" bean1=new "+beanName+"();");
//					if(pkColumsBeans!=null && pkColumsBeans.size()>0){
//						for(ColumsBean columsBean:pkColumsBeans){
//							sb.append("\n\t\tbean1.set"+StrUtils.toUpperCaseFirstOne(HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName()))+"("+HeaderUtils.getStr(config.getIsformat(),columsBean.getColumsName())+");//"+columsBean.getColumsNote()+"");
//						}
//					}else{
//						sb.append("\n\t\tbean1.setId(id);");
//					}
//					sb.append("\n\t\tString msg=\"1\";");
//					sb.append("\n\t\ttry {");
//					sb.append("\n\t\t\tmsg="+StrUtils.toLowerCaseFirstOne(serviceName)+".recoveryDataById(bean1);");
//					sb.append("\n\t\t} catch (Exception e) {");
//					sb.append("\n\t\t\tmsg=e.getMessage();");
//					sb.append("\n\t\t}");
//					sb.append("\n\t\trequest.setAttribute(\"msg\",msg);");
//					sb.append("\n\t\t");
//					sb.append("\n\t\treturn SUCCESS;");
//					sb.append("\n\t}");

					//TODO ------------------end---------------------------------------------
					//--2.1--设定----
					sb.append(HeaderUtils.setInfo(config,"bean", "BEAN类 "+table.getTableNote(),null, beanName));
					//--2.2--取得----
					sb.append(HeaderUtils.getInfo(config,"bean", "BEAN类 "+table.getTableNote(),null, beanName));
					//--2.1--设定----
					sb.append(HeaderUtils.setInfo(config,"beans", "BEAN类 集合 "+table.getTableNote(),null, "List<"+beanName+">"));
					//--2.2--取得----
					sb.append(HeaderUtils.getInfo(config,"beans", "BEAN类  集合 "+table.getTableNote(),null, "List<"+beanName+">"));
					//--2.1--设定----
					sb.append(HeaderUtils.setInfo(config,StrUtils.toLowerCaseFirstOne(serviceName), "业务处理 "+table.getTableNote(),null, "I"+serviceName));
					//--2.2--取得----
					sb.append(HeaderUtils.getInfo(config,StrUtils.toLowerCaseFirstOne(serviceName), "业务处理 "+table.getTableNote(),null, "I"+serviceName));
					
					sb.append("\n}");
					//文件保存路径 项目根目录+包路径+类名称
					String fileurl=config.getJavaDirUrl()+config.getActionPackage().replace(".", "/");
					//创建文件夹
			    	File saveDirFile = new File(fileurl);
			    	if (!saveDirFile.exists()) {
			    		saveDirFile.mkdirs();
			    	}
					//写入文件
					PrintWriter pw=new PrintWriter(fileurl+"/"+className+".java","utf8");
					pw.write(sb.toString());
					pw.close();
					
					
					csb.append("\n\t<!-- "+table.getTableNote()+" ActionCalss -->	");
					csb.append("\n\t<bean id=\""+StrUtils.toLowerCaseFirstOne(className)+"\" class=\""+config.getActionPackage()+"."+className+"\"");
					if(Validator.notEmpty(xmlExtends)){
						csb.append(" parent=\""+xmlExtends+"\" ");
					}
					csb.append(" scope=\"prototype\">	");
					csb.append("\n\t\t<property name=\""+StrUtils.toLowerCaseFirstOne(serviceName)+"\" ref=\""+StrUtils.toLowerCaseFirstOne(serviceName)+"\"></property>	");
					csb.append("\n\t</bean>	");
					
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return csb;
	}
	/**
	 * 
	 * @param sb
	 * @param pid
	 * @param name
	 * @param value
	 * @return
	 */
	private static void addAuthSql(StringBuffer authSql,String id,String name,String matchStr,String pid){
		//权限id',权限名称',权限匹配符',父级ID',备注',版本号',是否删除'
		authSql.append("\nINSERT INTO `t_auth_perm` (id,name,match_str,parentid,memo,order_no,del_flag) VALUES ('id_"+(id.replace(":", "_"))+"', '"+name+"', '"+matchStr+"',"+(Validator.notEmpty(pid)?"'id_"+pid+"":"")+"', '系统生成', '0', '0');");
	}
}
